#include <windows.h>
#include <Windowsx.h>

#include "BaseApplication.hpp"

namespace My
{
    class WindowsApplication : public BaseApplication
    {
    public:
        WindowsApplication(GfxConfiguration& config)
            : BaseApplication(config) {};

    public:
        virtual int Initialize() override;
		virtual void Finalize() override;
		virtual void Tick() override;

    public:
        // 获取主窗口句柄
        inline HWND GetMainWindow() { return m_hWnd; };

    private:
        // 窗口的消息处理函数，它根据不同的消息类型执行相应的操作
        static LRESULT CALLBACK WindowProc(HWND hWnd,
                        UINT message,
                        WPARAM wParam,
                        LPARAM lParam);    

    private:
        HWND    m_hWnd;     // 主窗口的句柄
    };
}
